package com.litchi.utils;

import org.json.JSONException;
import org.json.JSONObject;

import com.litchi.R;
import com.litchi.activity.MessageCenterActivity;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import cn.bmob.push.PushConstants;

public class MyPushMessageReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		String contentStr = null;
		// TODO Auto-generated method stub
		if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) {
			Log.d("bmob", "客户端收到推送内容：" + intent.getStringExtra(PushConstants.EXTRA_PUSH_MESSAGE_STRING));

			try {
				JSONObject jsonObject = new JSONObject(intent.getStringExtra(PushConstants.EXTRA_PUSH_MESSAGE_STRING));
				contentStr = jsonObject.getString("alert");
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			NotificationManager mNotificationManager = (NotificationManager) context
					.getSystemService(Context.NOTIFICATION_SERVICE);
			NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
			mBuilder.setContentTitle("丝绸商城消息");// 设置通知栏标题

			if (null != contentStr) {
				mBuilder.setContentText(contentStr);
			}

			Intent openintent = new Intent(context, MessageCenterActivity.class);
			openintent.putExtra("title", "新消息");
			openintent.putExtra("content", contentStr);
			PendingIntent contentIntent = PendingIntent.getActivity(context, 0, openintent, PendingIntent.FLAG_UPDATE_CURRENT);
			mBuilder.setContentIntent(contentIntent); // 设置通知栏点击意图
			// .setNumber(number) //设置通知集合的数量
			mBuilder.setTicker("丝绸商城消息来啦"); // 通知首次出现在通知栏，带上升动画效果的
			mBuilder.setWhen(System.currentTimeMillis());// 通知产生的时间，会在通知信息里显示，一般是系统获取到的时间
			mBuilder.setPriority(Notification.PRIORITY_DEFAULT); // 设置该通知优先级
			// .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
			mBuilder.setOngoing(false);// ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
			mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);// 向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合
			// Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 //
			// requires VIBRATE permission
			mBuilder.setSmallIcon(R.drawable.ic_launcher);// 设置通知小ICON

			Notification notify = mBuilder.build();
			notify.flags = Notification.FLAG_ONGOING_EVENT;
			mNotificationManager.notify(0, notify);
		}
	}

}